<?php

/**
 * Отображение
 */
class view {
	
	/**
	 * Имя файла с шаблоном для контента страницы
	 * @var string
	 */
	private $template = NULL;
	
	/**
	 * Параметры страницы
	 * @param array
	 */
	private $params = array();
	
	function __construct($template, $params = array()) {
		$this->set_template($template);
		$this->set_params($params);
	}
	
	function __destruct() {
		
	}
	
	function set_template($template) {
		$this->template = $template;
	}
	
	function set_params($params = array()) {
		$this->params = $params;
	}
	
	/**
	 * получить отренедеренный шаблон с параметрами $params
	 */
	function fetch_partial($template = NULL, $params = NULL) {
		if (! isset($template)) {
			$template = $this->template;
		}
		if (! isset($params)) {
			$params = $this->params;
		}
		
		extract($params);
		ob_start();
		include($template);
		return ob_get_clean();
	}
	
	/**
	 * вывести отренедеренный шаблон с параметрами $params
	 */
	function render_partial() {
		echo $this->fetch_partial();
	}
	
	/**
	 * Подготавливает страницу к выводу
	 * Разбирает шаблон содержания страницы и вставляет его в общий шаблон сайта
	 * @return string
	 */
	function fetch() {
		global $CFG;
		$content = $this->fetch_partial();
		return $this->fetch_partial(
			$CFG->lib_dir . '/views/layout.php', 
			array(
				'title' => 'Дополнительные функции к электронному журналу', 
				'content' => $content
			)
		);
	}
	
	/**
	 * Выводит готовую страницу на экран
	 */
	function render() {
		echo $this->fetch();
	}
}

?>
